package com.sxbbc.api.service;

import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.function.common.RestResponse;
import com.sxbbc.common.core.dto.jz.CustomerTeamVo;
import com.sxbbc.common.core.dto.jz.CustomerVo;
import com.sxbbc.common.core.entity.jz.CCustomerAuthen;
import com.sxbbc.common.core.entity.jz.CPayLog;
import com.sxbbc.common.core.entity.jz.SysCashDetails;
import com.sxbbc.common.core.enums.PasswordTypeEnums;
import com.sxbbc.common.core.utils.BasePage;

/**
 * 用户相关信息 编辑 业务处理
 * @author YQQ
 *
 */
public interface ICustomerService {
	
	
	/**
	 * 发送修改密码手机验证码
	 * @param phone
	 * @return
	 */
	 RestResponse sendUpdatePwdCode(String phone);

	/**
	 * 修改用户登录密码
	 * @param cid
	 * @param phone 手机号
	 * @param validcode 验证码
	 * @param password 密码
	 * @return
	 */
	 RestResponse  handleCustomerPassword(Integer cid,String phone,String validcode, String password);
	
	/**
	 * 修改密码
	 * @param cid
	 * @param phone
	 * @param validcode
	 * @param payWord
	 * @param type {@link PasswordTypeEnums}
	 */
	 RestResponse handleCustomerPayword(Integer cid,String phone, String validcode, String payWord,Integer type);

	/**
	 * 发送绑定验证码 
	 * @param bindStr 绑定的账号 （根据type）
	 * @param type 1手机号   2邮箱   
	 * @return
	 */
	 RestResponse sendBindCode(String bindStr,Integer type);
	
	/**
	 * 设置用户邮箱
	 * @param cid
	 * @param email
	 * @return
	 */
	 RestResponse updateCustomerEmail(Integer cid,String email,String validcode);
	
	/**
	 * 设置手机号
	 * @param cid
	 * @param phone
	 * @param validcode
	 * @return
	 */
	 RestResponse updateCustomerPhone(Integer cid,String phone,String validcode);

	/**
	 * 修改用户资料
	 * @param cid
	 * @param headUrl 头像
	 * @param nickName 昵称
	 * @return
	 */
	 RestResponse editCustomerInfo(Integer cid, String headUrl, String nickName);

	/**
	 * 处理用户提现申请
	 * @param cashDetail 提现信息
	 * @param payWord 支付密码
	 * @return
	 */
	 RestResponse handleCustomerCashApply(SysCashDetails cashDetail, String payWord);

	/**
	 * 查询用户账户信息
	 * @param cid 用户id
	 * @return Map 封装数据
	 */
	 Map<String, Object> queryCustomerAccount(Integer cid);

	/**
	 * 获取个人中心数据
	 * @param token 用户token
	 * @return 
	 */
	 CustomerVo getMyInfo(String token);



	/**
	 * 查询我的团队
	 * @param page 分页
	 * @param team 查询数据
	 * @return
	 */
	 IPage<CustomerTeamVo> queryMyTeam(BasePage<CustomerTeamVo> page, CustomerTeamVo team);

	/**
	 * 处理认证中心认证申请
	 * @param authen
	 * @return
	 */
	 RestResponse handleCustomerAuthen(CCustomerAuthen authen);

	/**
	 * 处理用户充值
	 * @param payWord 支付密码
	 * @param cPayLog 支付记录数据
	 * @return
	 * @author xiaoky
	 */
	 RestResponse handleCustomerRecharge(String payWord, CPayLog cPayLog);

	/**
	 * 统计团队人数
	 * @param cid 推荐人
	 * @return
	 * @author xiaoky
	 */
	 Map<String, Object> countTeamNum(Integer cid);

	/**
	 * 大陆认证需要验证码验证是否本人操作
	 * @param phone
	 * @return
	 */
	RestResponse sendAuthenCode(Integer cid,String phone);

	RestResponse updateNewCustomerPhone(Integer cid, String oldphone, String newphone, String validcode);
}
